{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.9"
},
"colab": {
"name": "603_Boundary Value Problem.ipynb",
"provenance": [],
"include_colab_link": true
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"
"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3PVzV05GzGnN"
},
"source": [
"# Finite Difference Method\n",
"#### John S Butler john.s.butler@tudublin.ie \n",
"[Course Notes](https://johnsbutler.netlify.com/files/Teaching/Numerical_Analysis_for_Differential_Equations.pdf) \n",
"[Github](https://github.com/john-s-butler-dit/Numerical-Analysis-Python)\n",
"\n",
"## Overview\n",
"This notebook illustrates the finite different method for a linear Boundary Value Problem.\n",
"The video below walks through the code."
]
},
{
"cell_type": "code",
"metadata": {
"id": "NiEaXyDkzGnQ",
"outputId": "537245ec-c878-4272-f82d-7d1628a19788",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 336
}
},
"source": [
"from IPython.display import HTML\n",
"HTML('')"
],
"execution_count": 1,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"execution_count": 1
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "h4ZbgVquzGnS"
},
"source": [
"## Introduction\n",
"To numerically approximate a linear Boundary Value Problem\n",
"\\begin{equation}\n",
"y^{''}=f(x,y,y^{'}), \\ \\ \\ a < x < b, \\end{equation}\n",
"with the boundary conditions\n",
"\\begin{equation}y(a)=\\alpha,\\end{equation} and\n",
"\\begin{equation}y(b) =\\beta,\\end{equation}\n",
"is dicretised to a system of difference equations.\n",
"the first derivative can be approximated by the difference operators:\n",
"\\begin{equation} D^{+}U_{i}=\\frac{U_{i+1}-U_{i}}{h_{i+1}} \\ \\ \\ \\mbox{ Forward,} \\end{equation}\n",
"\\begin{equation} D^{-}U_{i}=\\frac{U_{i}-U_{i-1}}{h_i} \\ \\ \\ \\mbox{ Backward,} \\end{equation}\n",
"or\n",
"\\begin{equation}D^{0}U_{i}=\\frac{U_{i+1}-U_{i-1}}{x_{i+1}-x_{i-1}}=\\frac{U_{i+1}-U_{i-1}}{2h} \\ \\ \\ \\mbox{ Centered.} \\end{equation}\n",
"The second derivative can be approximated by:\n",
"\\begin{equation}\\delta_x^{2}U_{i}=\\frac{2}{x_{i+1}-x_{i-1}}\\left(\\frac{U_{i+1}-U_{i}}{x_{i+1}-x_{i}}-\\frac{U_{i}-U_{i-1}}{x_{i}-x_{i-1}}\\right)=\\frac{U_{i+1}-2U_{2}+U_{i-1}}{h^2} \\ \\ \\ \\mbox{ Centered in $x$ direction}. \\end{equation}\n",
"\n",
"### Example Boundary Value Problem\n",
"To illustrate the method we will apply the finite difference method to the this boundary value problem\n",
"\\begin{equation} \\frac{d^2 y}{dx^2} = 4y,\\end{equation}\n",
"with the boundary conditions\n",
"\\begin{equation} y(0)=1.1752, y(1)=10.0179. \\end{equation}"
]
},
{
"cell_type": "code",
"metadata": {
"id": "6oqtuHXLzGnT"
},
"source": [
"import numpy as np\n",
"import math\n",
"import matplotlib.pyplot as plt\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")"
],
"execution_count": 2,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "UAqWYzFpzGnT"
},
"source": [
"## Discrete Axis\n",
"The stepsize is defined as\n",
"\\begin{equation}h=\\frac{b-a}{N}\\end{equation}\n",
"here it is \n",
"\\begin{equation}h=\\frac{1-0}{10}\\end{equation}\n",
"giving \n",
"\\begin{equation}x_i=0+0.1 i\\end{equation}\n",
"for $i=0,1,...10.$"
]
},
{
"cell_type": "code",
"metadata": {
"id": "P5VZ6dXEzGnT",
"outputId": "86626a62-0dee-4798-b9ea-64730a7bdcc4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 315
}
},
"source": [
"## BVP\n",
"N=10\n",
"h=1/N\n",
"x=np.linspace(0,1,N+1)\n",
"fig = plt.figure(figsize=(10,4))\n",
"plt.plot(x,0*x,'o:',color='red')\n",
"plt.plot(x[0],0,'o:',color='green')\n",
"plt.plot(x[10],0,'o:',color='green')\n",
"\n",
"\n",
"plt.xlim((0,1))\n",
"plt.xlabel('x',fontsize=16)\n",
"plt.title('Illustration of discrete time points for h=%s'%(h),fontsize=32)\n",
"plt.show()"
],
"execution_count": 3,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAswAAAEqCAYAAAABJAYYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deZgkZZWo8ffQLSiLgICIbKWCC7ihNSLqXBAQUAfwIo5ydaTdUBnnugAzeB21RRl3UWdwQXFAYEQEl0ZEBtFWB0UsREWU3WZXGlkEERE4948vkowuMiOzqrIqs4r39zz5VEbkVxEn9hNffBERmYkkSZKkzlYbdgCSJEnSKDNhliRJkhqYMEuSJEkNTJglSZKkBibMkiRJUgMTZkmSJKnBQBPmiDgmIrL67NSlzPJambFBjl8zExFjtWWzfNjxzEcR8cSIOCoiLoqIP9Xm56w/v7E2rhVdft+pVuaY2Y5HoysiVszVeqnBcP/cXURsGBHvi4iJiLglIu7plYuMsn5yKc29xf0WrA7CW1adz83M5bMR0KiKiLcA6wFk5tLhRtOfiHgR8NSq85jMXDHEcBa8iNgTOBlYfdixaOYiYgkwVnV+PDNvGV403UXEU4EXVZ3LH2j7Zs2uiFhafb0lMz8+zFg6iYhHAWcDmww7Fq0qIlYD/h7Yj5KLbAz8EfgtsAz4fGb+fsDj3BB4eu0zDmxRKzLt/LXvhFm8hfYJw9IhxjEVLwL2r74vB1YMLZIFLiIeBHyWdrL8Y+D7wB+GFpRmagmwY/X9GGAkE2bKgejdte7lQ4pDC1Nr3boSGLmEGfgQ7WR5BfA14PfAPVW/y4cQ0wNeRGwGnAg8e9JPG1WfZwBvi4jXZubXBjTONwCfHsSwOjFhlgbjb2jvtH+cmc8aZjCStNBFxGLgBVXnbcB4ZlpJMWQRsT7w38ATql5/Br4KXAysD+wNPBp4GHBSROyZmd8ewKgf3KHfbVX/B8104CbMuk/VZCOGHcc8Vb/k88OhRdGgugzl8hWZOTbsGDQ17p872hBYs/r+G5PlkfER2snyRcDz601CI+IQ4JPAgZQ89IsRsVVm/nGG472dcmX3vNrnEkoTkC0b/q8vJszSYNTPbP88tCgk6YHD/e6IiYjHU5qzAfwV2Hfy/VOZeU9E/BPwFEqTjY2Ag4F3zWTcmfl54PMdYprJYFcZQV8fStugrD47dSlzTB9lltfKjHX4faz2+/I+4lpSK7+0odz6wEHAWcD1wF+AuyhtTH9GaX+6L7DepP/LPj8rJv3f0tpvS6p+WwLvBc4HVgL3Tp5GYBGwC/DBal61Yr0DuAr4BvAaYPWGaa3P416fsRnM+4cD76TccPH7an7eQGm/uxR4xFTWq1q/5wDHA1cAd1bL6PvA64HF/a6zU1i3HwW8H5gAbqzm9/XA94BDgHW7/F99fvX6dNwephDjvsBpVVx3UtoTfg14YYd1dUWXYexUK3NMw7gWAS+nXEL7LfAn4G7gVuDXwEnA64At+4h7feBtwOnA1ZSD2p3Vuvytav5u3s9+gHJJ7VXAt6v/v2vyOlz7/7WAN1XjuKoa763Ab4DPAE/vZ53s9WkYRgAvrtbjyyg3uvy5Wm5fBvYBYobrxNIprH9Lem13fcz/xcBrge9W6+GfKbVHR3ZZhk8GPlfN8z8BN1H2v/tOcTq3qKb1bOB31XK/ETgXeB/wyAHuC1bZhihPkno5cAZwLWXfcA3wFWC3KQ77OcBR1Ty7tbY+fBV4BbCox//fb5l0KLOkVmZp1e+hlGPfuZR96Z2UfevngMf1Ma5en/vFAjyEsr/+VjW//kxJnm4Gfgl8EfgHYONpLqcVfca2tMv/T2uf32NdCcp++muU/eadTHPfT4dcitKE4SOUffDtlKYGv6DkFOsPahsYwDb03lrs/9Wj7O61sr+dxZhWTJ6f0xrOIEfYaSF3KLO8Vmasw+/1DXV5H3Et6WPj2JGSoPazgX1k0v/2u9NYMen/ltZ+WwK8lHLQbNzZUJKKfsZ3GbBtH/O412dsOvMeeHWX6al/bgcOmMJ6FcCHKScSXXfOwNoD3JDeQdlZNk3HSmCvHutqr8+0NlLK5cZv9hj2sZRksuO6WBvWTrUyx3QpsynlhK6faZroEfuBlMSg13Du6bUfoCRNP+21Dlf/uw/lBK5pnPdSEucH9VgnGz9dpnsbyoGs1/+fzTQThg77mF6fJd2mscuwJ8//jat4uw3/VmD72v8fRvN2fGQf0xfAe2gnHt0+d9BjPzOFeXrfNgSsS0mUm8b9n/ROdNeinGT2WkYXAI9tGM4qy6RLmSW1MkspNXiXNYzzL8CLZ7hvWz7pf7elJIz9/O/J01xOK/oc/tIO/zvtfX7DurIe5US+07B2msb0HVP/f+BllAS5W7zXAI8fxDYwgG3ol7W4XtSj7GqUk6hW+e1mKab6+jLl5dH6LPgmGdWdmqcC61S9rqE0Rl9BOeNdF3gssAOdH0tzSPX3/1Fqy+r96m5tCOPZlB3ZYkqbmu9RVpLNKGf/dRtVfy+nnP1eTrvR+uOBPaqYHwOcFRFPyfs/luXTlCTrpZRHqkBJDjrdLXxTQ9wdRcSbgH+v9bqa8oiY64BHAHtSdrhrAZ+NiDWzv8cRHUa5LHMHpTb1wqr/DpQzUSgnPx8DDphq3JNFxEcoNS8tF1NqRG6kXA3Ym5IobAh8NSJempmn1MrfRHtdGKfMb4AzKetY3ZTv1K4eyfN14Hm13j8EfkCpZXsSZV6/krKDn5Ha+FqPIryNchC4iFJDuBZluY7Tbp/WbVgfA95a63UDJfm4grLdbUK5UfJv6P08+AdXcW1XDeeblAPy2pRtK2vjfQPwKdptPX9FuTpxHeUJJtsBz6ecYLyectPJ308a3+GUbeyNlFodgH+jbLONIuIZlGW/btXr+qr7CkoCuRVlmT0MeBbwPxExnplN+49u/ptyUtpr3YNysjFdDwJOocR7FWX+X0vZNvYFHknZj50WEY8G/oly5elOynZ8AWUZPxf422qYB0bEjzLzhE4jjHIN9Xjg/1S97qWs9z+lbHfrVcN6FqU287MRsTgzPzWD6ZzsaGA3ynbwdUpbyLUp2+PTqjJLKOvaki7TsTplmexQ6/194H8o2/C2lPXhIcATgbMjYofMvGwA8W9G2X4fQdkOzqTsJzalnFRuQtkmjouIn2dmfR9V37d9uPp7M2U7mOzq1peIWJtyNWnzqteNVQyXU2qZ16Ecu7an1PJOV2sbXZ9ybIayjU1+QsKP6h0D2Od3EsAJlGPUrZR1/mLKvB2n/bSO6doN+GfKNvRd4BzKMfJxwEso+8dNgZMjYrvM/OsMxzdtEbEGpcKg5X+aymfmvRHxI9o3bm5HqbAZTYPM0BnBGmZKEtb6/Si6XNKnrPQ7AH/Xa/r7nF9LWfUM8M/0cSkS+CiwTcPv61AuZ7WGe3RD2Z7LY6rznpKk1c/O/51JzUMoB9iP18rcRZczR+5fU/AjOlxipRyYWzVW9wCbTvcssRre7pPGeyiw2qQya1Mun7fK3NxtvL3Ww2nG+KbaMO+kw9k6ZafZSsbuq/HoMrydamWO6fD7zrXffwps0BDbo4HXdvntlbXh3EupJXxwl7KPBN7XY128L2ZgrYaYnkm7mcYNwAu6lHsMq9aCvKpLueW1MmN9LK/1KZfYk9KE5WA67G8o23B9vTp2huvJlNc9plbD3Pocwf239XVYteb/xGraf9FpnlFq91plL2qI76BauQm61J5RkolbqnJ/oUsTgynMy/p6m5TkpNP+6LWU/VCrfMeaNMpl/1aZ24Ddu2xLv6qV+wkdmusw9RrmpJycvq7LOli/YvDZPubJij7m36tr5b8JrNlQ9snAfjNcXj3nSa3soPf5k7ePbwMbzmR6asM+ZtKwfwfs0KHc4yn7ula5rvOTKVw56/PTaft+Sn3e9Tmtn6j9z0cHMf96TPtO0x7OIEfIaCbMp9Z+75oATGX6+yy/dNLK1TG5mGYsq1HaXSclEe/YRKGf5THVeQ98qVZmWY/hfbVW9pQ+1qurmdSGfFLZE2tl/3GG8/DHtWF9sqHcYkrbv8YNutd6OI34FlNq8VrDfH1D2W1oJ4pdD2z0TpjrScr9LtP2Gfcak+J++zSHU18Xk1K72Njml1L7npQkYbxH2U1pX+K8tEuZ5bXxj/URc73t3lv6WL6tRPNu+mgP3jCsKa97TD1h/mrDsJ49qewtdE8yVqPU1LbK3q9ygFJ73GrutYIe7UkptYKt4X1+uvOxGlZ9OlbSkACx6j7+Zx1+X59yZaZVZp+GYW3Gqk3c9uyxTJb3sS4kcHDDOJ9Qn9Y+5smKPubfv9fKd71PYFCffuZJreyg9/n1+Xwp8JABTtcxtWHfQ625U4eyb6iV/UpDuRWTYp7pZ6zDOOonJRf0Oa0H1/7nhFlaT+rTvtN0h7Pgm2RQbmBqWZPhvEjiauALgxpYlssYJ1EuXzyYcln7e4MafjcRsRblRqaWf+nxL/8C/O/q+94RsV42vy3toz1+P5n2pefteoy7q4h4LKU2EkrN7bu7lc3MuyPi/1EuZwK8MiIOzmornEU7U2pfodRafq4hxl9HxHGU2p2ZmLytTMeLaMd9KeXm1UE4rGmeR8RTKDdVAZyUmRNNA8vMayPiS5SbF7eKiG0y89fTDa5qzvLGqvMayiOTmsZ/d0QcQbmUuwh4IaUpyahq2kbOjoibaTdZ+3xmXtul7L0R8S3gzVWv7Sg3MdXtT7sJ3eHZo7lKZn4jIi4FtqY0bxiUIzLzxobfP0RpdvRQYLuIeFJmXlD7/SW0t6NzM/Or3QaUmddExCcpNfBQ5sGp0w8dKAl/1/UwM38TERdSmoVsGBGbZeY1MxznIPYhAzcH+/wPZuZsPaXj1Mz8ScPvJ9NuitJ0XGw1YxmUTs0516l9/1Ofw7mjy/+PnAdCwvwLSptFgKMjYklmXjfHMZyemfdO9Z+qV34+idKmam1W3RnVN4zHMQcJM+XNPK2Hf1+Ymb9pKpyZl0bE+ZRYF1F2WE0PJz+9x/gvqX1/eI+yTepvHjorM3u1TT2LcqK1AaVt2+Mo7XpnUz3Gb/Sx/pzCzBPmX9S+vzcifp2Z501xGLvUvn9xOut9B3+m9/pdH+8ZfQ7357Xvf8P9E7epeCpl/QA4s8/pnjz+UXX9pESwk9/STpg7taGuq7eVfUSH36e7LLcGHh4RW2bmlX3+X5PGt49l5h0R8W3abeCfRWmv3VLfhr/Sx/hOop0wT3472nSclZl39ShzCSVhhrJPnWnCXN+HfKJqA3zpDIc5CLO9zz9tZuE1ajwuZuaNtRPWrsfFzOxa6TJAD6l977XutdxZ+z4yJ1mdPBAS5s9Q7tZ/KOVmjSsj4oeUA/A5wDmZedssx9B3chURiyg3tP1fSvukfqw3naCmYeva934b5v+MdnK/Nc0Jc6+DXH05rd3n+DuZ0nRkZkbEz2kfyLdm9hPmx9a+/7xrqbZf9C7S05mU+bEd5QaYiYj4ZdX/R5RtpdfJZv2Gj3MHEBOUJhO9bpx5Su37sRFx7BTHsVHvIn2P/1UR8ao5Hv9suqqPMrdPoXy97Fodfq/Pyyun8QzVjei9L+nlTsqNW738knbC/LhJv011f3khJclYHXhERKwzw2NTP/NgUPvUlv8C/pXSxGQ74OKIOJeSgP6Y8hbUYVzlnc19/h8z8/oZxtek3+W4PoNZhjNRr2Vfvc//qT9L+46upUZAr7vT572qpmF32rUaiyl3ax9GqQm5OSJ+GBGvq+5ong193QFf3WF6KuXSbL/JMnR+HeRsWL/2velSZV293MOaCmbmnU2/U9oftcxk3Z3V6RiQeoz9HGD6nY6uqlrRFwDfqfV+MqVt8ynAtRHxm4hYGhHdErwNat9vmGlMlX62nw16F2nUKXGbimGPfzb12i5h1W1zptvxKMzLm/u8SlDf7taf9NuU9jPVSWG95nOm+5mpLrcZ5wNVgr8rpaIEys3021OeZHEqsDIizouIgyJiLi+/z+Y+fzpPuJmKqSzHYb8Jsn4C1u92WK9Vnu3Kyxl5INQwk5nnVG+f2RPYC/hftB8XtYjS9vE5wCERsXevpgbT0O9l6XfSbj5yO+VlKmdQLputBO5s7cSrGqyBtYuWADLzd8DzImIHSs3ZjpSkudUc6PGU9n9vi4j9M7PxsvWA9LP91Pdl/8nUm1f8qHeRvsf/A6be/vTq3kUeMOrz8l8pT7+YiisGGIumKDMvjohxSuK8D+V4+wRKMheUR/I9DTg4Il6SmY2PHpsHBtHsbNZFxOsYbBvmo/L+r7L+Xe37Zn0Op15u8iNyR8ooJsz1M95+zpb6avOSmXdT2qR9DSAiHknZkPek3Mi2BuWyyzerG4CmupOekYhYTPumobuB5/a4cWmQK36/6rUf/dYCbVj7PuVnPs+S+TAdU41xw95F+peZP6ZcQiUiHkppn7kH5bm4G1E9Gq167ueFtX+t14bPpJ35VNXHe1Z2eb7vHI3/ksz8yByPfyH5A+0bR4/pdgPhLFs/Ilbro5a5vt1Nbhc7pW24ao5Xrwkdlf3llFU3yJ1ZfYiIDSjPzX4B5cbth1Lar58aEY/NzBk/R76H+bDPn23voDS1G5STKU92qbuYcgKxGrBeRGzY48ZZKM+mb7mwa6kRMIpNMurt2/ppj7PFdEaSmddl5omZ+XJKm7nWBvFo2rW8c+mxtC/7/KDXXf6Uh9zPtfrNG/0+paJe7pKupebWlKajeolCvV3lXExHfRxP6VpqamWmJTP/mJnfzsy3ULaP1h3bD6I8ZaKuvsN7xmzF1EH9qtCszYsRHv9CMgrz8sGseh9BN0+ufZ/c5nmq+8ttaLf7/N0c3FszZzLzD5n59cw8gDJfW1cB1qO8eny2zYd9/rxXNausX91rvHm1errQs2q9RvelJYxmwnwL7UtwW1UztMnuPX7vKTMvptyh3DL55g0oz3YF7qsJGLS+axaqts5/18cw62/8GUTM59aG+cSI6DSf7hMRj6G9c7qHdqI1bGfXvu8aEb1q659Lu7bhRuZm51lvIrB39L7zaZ/ZDKYlM2+nvMCiZfI6cFbt+yv72H4H5cza95dUV2xmairbz09ot797evUYq7ky6O182OrLcr+hRdF+JGZHEfEQylWXlsnNeur7mX37GN9LuvzvsN1d/R3IupXlzbRH1Xo1HkcGZD7s82dVZo5lZgzws6LLqL5R+/6SLmVadqGd+1yZmT9rKjxsI5cwVzc+/LLqfCirPmJoFRGxD+3X+A5Sp+cp1hv2z8ZNX/VLuk/tkWi8nfKouV4GGnNm/oly81fL+3v8ywdoN6v5eo9nLM+ZzLyE8oQUKDVJS7uVrU6O6q+DPXYOnsEMJfFs3Xk9RnmzWEdV+/x/mIOYOpm8rXyd8hpqKE2c/nkugqieU9p6/fMY7cdz9dRwMtL39pPldbSfqTpXA46cyol1HydETWZ73zTXvkD7Ga77RcTO/f7jDOfjZG+NiKb5eQjlGAXw8w6P3vsK7bv+nxkRe3cbUNVE8M21XsdMMdbZ1Fq/Jt/UOCiz9fzi+8yTff5CcQLtdt0viYgndCpU5TjvrPU6brYDm6mRS5gr9Qe8fzIi7pccRsQL6WOnEhHfjYi3RkSn5322yjwHeEWt1w86FKtfbntur/FOwyW0nyqwFXD45KQ5IhZFxL8A72LVtt7dzEbM/0b7+Yr/OyI+PvnpIhHxoIj4KO1alb8C7xvQ+Adlae37WyLikMkH2+pFLcdR7vKGcvWjXrs6a6o29x+o9fpkRNzvpQxVTeaptJ+PPW3VsvxIRGzbUGZTyo1YLatsK9VzX99e6/Vv1VM1Oj7JJSI2jYjDZxJ3zVtp17YujYiPVu2vO4qILSLi7XR/1u9Ut58P0r55b1fg9IgYaxj/uhGxf/Ws8pk8GaIe545zWKs/K6r2rO+pOhcByyLi1U0nIBHxtIg4ksG9KCcpbfW/2enYUd10/a5ar/febwDlWb+fqPX6YkTs2mFYY5Rn7bbW1XOZ3ef6TlVr/VorIhqbWUXEiRHxrijvEOhWZhvKY1NbOh1vZ8PS2veR2+cvFNVDE75Yda4OnBIRq7SdrrblT1DatUOpxe9630dELI+IrD5LBx91f0bxpj8oNTVvptwU8HjgNxHxFarXpFLu3H8mpRbiCMqBsptHAx8DPlIdmM6nvLr3LspNSdvTfgMQwJczs9Nzb0+j3PAE8PmI2BG4jPYB+o+Z+cUO/9eX6g1YHwQ+WvU6FNgrIs6i3Hm6CeVtYI+iTPdnKI/7avJt2g3w3xARGwITrPqsw2On0lYuMy+IiIMor0CFspxeFBGnUmpEN6bcSFnfYf5zl3k6NJl5RpXUt+bhhyjPzz2dUtu/BeWVu62D5T2U15vP5Q1I/1HFsDOlVmRZRPyAcoC5i/JSm70oN6zWp2W61qO8YeygiLiccuD+LaWpwcMo2+IetJPzy4HPTx5IZn4xIp5OOSgG5akab4zykocrKJd4NwHGKe2cgynUCHeT5Y1zr6e8FXER8DbgtdU29OtqOtYBNqfcpd+6D6DbjSanUR6HBeVFLk8AfkXtqQ2Z+R+173+oahG/Q5lfzwMuq5bZBKWp1YMp28iTKdM/40dZVi8Iar3pblvgh9V6XL+i853MnO1nhw9MZn64unLyasrjqY4G3hMR36EcB+6iHAu2prz0ZfPqX48cUAhXAedRmjpdHBFfp1RqrE05GRqvlT0+u7/FbynllfQ7UBLiMyNiOaWJwF8oy2sv2i98uBF4+YjVaJ5Gu53pqRFxAuXZwK1no19be1rOIyg39b0nylsEJyjz8s+UJg5PoZx8tk7qfsTM32jYl3myz18oDqas84+jPCHl1xHxVcrJ1/qU+fyYquzdwJLs8UbPfkXEyR161x+D+p6ImHyT6UmZeRK95ADfxc2q7z/vVmZ5rcz93kVeK7cD5c7Wbu8xX0lprrGk1m9ph+Fc0jCMyZ9jgTW6xLMY+H7D/66YVH5p7bclfc7joBzsm2K8gXIgbpzu2jAP7zG8sVrZsVr/5T1ifQ0lAWka9u3AAf2uV33Mn77jm8J6/U7KgatpOm4E9uoxnL6WxzTiW5tS+9QU33GUJLbjulgb1k61Msd0+P2oKWwr5wJb9Ij9rdU60GtYfx3ksqacYFwxhWk5sWFYJzT9b8N62rSvmPy5BFhnhuvJCyhJZLdxLJnKdjfV+U+f+/WpbiuUE/Jb+5yPdwL/d4bz8b5tiJKQn9ljnF8EFvcY5lqU5hm94v8V8NiG4fRcJlOZt1X5Y2rld+pSZh3KjZjd4l5eK/vfU1jvTwfWn+HymtJ6Wv3PoPb5960rM5mG6S6XSeVXtMoPOpYZTMMWlBOipvl8E/DiPoa1vN/1egrrX/Y7zNZnVGuYycwfV5duDqYcDLagnPFdSWlUfmRmXh8RS3oM6qmUxHon4OmUs5oNKQnwbZQD648or/Ht+mSKLO+Xfx7wBsrNINtSauRmfCm8No4EXhcR36C87W97ytnYLbSn+3OZ+fs+prs1zHdEedPSEsr0b8QAXnSSmUdXtcpvoNQ6bkWZH7dSah6/DXwmy3N9R1ZmvreqMTkA2I3y2J11KBvyRZTalaNyQGe/04jvduD5EfES4FWUZbge5cTpZ8DRmbkMYADNN99AOWncmXLV5XGU2tA1KVclrqHUun0FWFatr02xHxERx1PaX+9eDW8Dynb8e0qC8B3gxJkGPmm8362aquxLuSqzPeVq0tqUqzPXUmqcfwB8MzObntv7CkoSsB+lVngDetQKZ7kZZseI+F+Um16eQ3nW6HqUA/VKSk3Lj4HTM3PGb0TMzG9Vl8v/iVIbuDlluQ37RQYzkpmfiPLWxv0pNbtPpuy/H0TZf6+g3PNyFnBa9n7l8VTGfWtE7E65P+AVlH3+BpRk6hzKfqHnq7uz3Pvxkoj4W+CVlMeZbkJZj26gbFNfBf4re7/Rcs5l5m0RsT1l3XohZTt+KJ2vUL+QMn07U64ebUXZh6xOOXm+inKD7Jcy87uzH/39jfo+f6HIzKuq5q4vpew/n0pZF26jXLlcRslnRjpHqIsexzxJkh4QIqJ1QLwyM8eGGYuk0TKvbw6RJEmSZpsJsyRJktTAhFmSJElqYMIsSZIkNTBhliRJkhqM7GPl5oMNN9wwx8bGhh2GJGmAVl999S3Hx8d9hJQWnPPOO+/GzNyod0lNZsI8A2NjY0xMdH10syRJ0siIiCuHHcN8ZZMMSZIkqYEJsyRJktTAhFmSJElqYMIsSZIkNTBhliRJkhqYMEuSJEkNTJglSZKkBibMkiRJUgMTZkmSJKmBCbMkSZLUwIRZkiRJamDCLEmSJDUwYZYkSZIamDBLkiRJDUyYJUmSpAYmzJIkSVIDE2ZJkiSpgQmzJEmS1MCEWZIkSWpgwixJkiQ1MGGWJEmSGpgwS5IkSQ1MmCVJkqQGJsySJElSAxNmSZIkqcGCS5gjYo+IuDgiLouIQzv8vkZEfLn6/ScRMTbp9y0i4vaIOHiuYpYkSdLoWlAJc0QsAo4Eng9sA+wXEdtMKvYa4ObM3Ao4AvjgpN8/Bpw+27FKkiRpflhQCTPwDOCyzLwiM+8CTgT2nlRmb+DY6vvJwC4REQAR8SLgt8CFcxSvJEmSRtxCS5g3Ba6udV9T9etYJjPvBm4FNoiItYF/Ad7TNIKIOCAiJiJiYuXKlQMLXJIkSaNpoSXMM7EUOCIzb28qlJlHZeZ4Zo5vtNFGcxOZJEmShmbxsAMYsGuBzWvdm1X9OpW5JiIWA+sCfwC2B/aNiA8B6wH3RsSdmfkfsx+2JEmSRtVCS5h/CmwdEY+iJMYvA/7PpDLLgP2BHwP7At/NzAT+tlUgIpYCt5ssS5IkaUElzJl5d0S8CTgDWAR8ITMvjIjDgInMXAYcDRwXEZcBN1GSakmSJKmjKJWrmo7x8fGcmJgYdhiSJEk9RcR5mTk+7DjmI2/6kyRJkhqYMEuSJEkNTJglSZKkBibMkiRJUgMTZkmSJKmBCbMkSZLUwIRZkiRJamDCLEmSJDUwYZYkSZIamDBLkiRJDUyYJUmSpAYmzJIkSVIDE2ZJkiSpgQmzJEmS1MCEWT2X9ZIAABJASURBVJIkSWpgwixJkiQ1MGGWJEmSGpgwS5IkSQ1MmCVJkqQGJsySJElSAxNmSZIkqYEJsyRJktTAhFmSJElqYMIsSZIkNTBhliRJkhqYMEuSJEkNTJglSZKkBibMkiRJUgMTZkmSJKmBCbMkSZLUYMElzBGxR0RcHBGXRcShHX5fIyK+XP3+k4gYq/o/LyLOi4gLqr87z3XskiRJGj0LKmGOiEXAkcDzgW2A/SJim0nFXgPcnJlbAUcAH6z63wjsmZlPAvYHjpubqCVJkjTKFlTCDDwDuCwzr8jMu4ATgb0nldkbOLb6fjKwS0REZp6fmddV/S8EHhIRa8xJ1JIkSRpZCy1h3hS4utZ9TdWvY5nMvBu4FdhgUpkXAz/LzL/MUpySJEmaJxYPO4BRExHbUppp7Nbl9wOAAwC22GKLOYxMkiRJw7DQapivBTavdW9W9etYJiIWA+sCf6i6NwO+BrwyMy/vNILMPCozxzNzfKONNhpw+JIkSRo1Cy1h/imwdUQ8KiJWB14GLJtUZhnlpj6AfYHvZmZGxHrAacChmXn2nEUsSZKkkbagEuaqTfKbgDOA3wAnZeaFEXFYROxVFTsa2CAiLgPeBrQePfcmYCvgXRHx8+rz8DmeBEmSJI2YyMxhxzBvjY+P58TExLDDkCRJ6ikizsvM8WHHMR8tqBpmSZIkadBMmCVJkqQGJsySJElSAxNmSZIkqYEJsyRJktTAhFmSJElqYMIsSZIkNTBhliRJkhqYMEuSJEkNTJglSZKkBibMkiRJUgMTZkmSJKmBCbMkSZLUwIRZkiRJamDCLEmSJDUwYZYkSZIamDBLkiRJDUyYJUmSpAYmzJIkSVIDE2ZJkiSpgQmzJEmS1MCEWZIkSWpgwixJkiQ1MGGWJEmSGpgwS5IkSQ1MmCVJkqQGJsySJElSAxNmSZIkqYEJsyRJktTAhFmSJElqYMIsSZIkNVhwCXNE7BERF0fEZRFxaIff14iIL1e//yQixmq/vb3qf3FE7N5rXOdddx5jhyzmhE8fONiJGLYTToCxMVhttfL3hBOGHdFgOX3z20KevoU8beD0zXdO37x1wqcPZOyQxbAJTx92LPNWZi6YD7AIuBx4NLA68Atgm0llDgQ+U31/GfDl6vs2Vfk1gEdVw1nUOL5NSJaSa76DPP5Tb8wF4fjjM9dcMxPanzXXLP0XAqdvflvI07eQpy3T6ZvvnL556/hPvTHXfEfJV9iEzBHI1+bjZ+gBDHRiYAfgjFr324G3TypzBrBD9X0xcCMQk8vWy3UdX5Uws5Tc8uBFmTvumHnccZmZmX/6U+k+8cTSfcstpfuUU0r3ypWle9my0n399aX79NNL91VXle4zzyzdl19eupcvL90XXVS6zz67dF9wQek+99zSff75pfv880v3ueeW7gsuKN1nn126L7qodC9fXrof+chcZYfR+jz84eX3668v5ZctK90rV5buU04p3bfcUrpPPLF0/+lPpfu440r3XXeV7v/8z9LdctRRmbvs0u4+8sjMPfZod3/845l77tnu/vCHM/fZp939/vdnvvSl7e7DDst8+cvb3e98Z+aSJZlbbtl5+tZZJ/PAA9vl3/zm8mk58MDMgw5qd7/udZmHHtruXrKkjKPl5S8vMbS89KUlxpZ99inT0LLnnmUaW/bYo8yDll12KfOoZccdyzzMLPO0te51m7411hj9de/yy0v3mWeW7quuKt2nn95e95qmb9TXvZZDDy3rT8tBB5X1q9u0rb32/Fj3Mpv3e03Lbj6se5nN+72m6Rv1da+lab/XbfrWXbddflTXvcze+71NN+08fRtvXH4f5XUvs3G/t+XBi+7LVUyYp/9ZaE0yNgWurnVfU/XrWCYz7wZuBTbo83+JiAMiYiIiJur9r1rrnhkHPxKuv75z/5Ur5zaO2XLVVZ3733bb3MYxW7pN31/+MrdxzJaFPH3dpu322+c2jtmykJcdPHCn79Zb5zaO2XLddZ3733DD3MYxCxZMfjJkkZnDjmFgImJfYI/MfG3V/Q/A9pn5plqZX1Vlrqm6Lwe2B5YC52Tm8VX/o4HTM/PkruN7ZCSvL9+3vH0RKz5892xM1twaG4Mrr7x//y23hBUr5jqawXP65reFPH0LedrA6ZvvnL55a+yQxVy5dpU0fxbyuozhRjQ/LbQa5muBzWvdm1X9OpaJiMXAusAf+vzfjtb8Kxz+6AOmGfKIOfxwWHPNVfutuWbpvxA4ffPbQp6+hTxt4PTNd07fvHX4ow9gzb8OO4oFYNhtQgb5obRJvoJy017rpr9tJ5X5R1a96e+k6vu2rHrT3xX0cdPflgcvWjg3/LUcf3xprxZR/i6Amx5W4fTNbwt5+hbytGU6ffOd0zdvHf+pN5a2zLZhnvZnQTXJAIiIFwAfpzwx4wuZeXhEHAZMZOayiHgwcBywHXAT8LLMvKL633cArwbuBt6Smac3jWt8fDwnJiaaikiSJI2EiDgvM8eHHcd8tOAS5rlkwixJkuYLE+bpW2htmCVJkqSBMmGWJEmSGpgwS5IkSQ1MmCVJkqQGJsySJElSAxNmSZIkqYEJsyRJktTAhFmSJElqYMIsSZIkNTBhliRJkhqYMEuSJEkNTJglSZKkBibMkiRJUgMTZkmSJKmBCbMkSZLUwIRZkiRJamDCLEmSJDUwYZYkSZIamDBLkiRJDUyYJUmSpAYmzJIkSVIDE2ZJkiSpgQmzJEmS1MCEWZIkSWpgwixJkiQ1MGGWJEmSGpgwS5IkSQ1MmCVJkqQGJsySJElSAxNmSZIkqcGCSZgj4mERcWZEXFr9Xb9Luf2rMpdGxP5VvzUj4rSIuCgiLoyID8xt9JIkSRpVCyZhBg4FzsrMrYGzqu5VRMTDgHcD2wPPAN5dS6w/kpmPB7YDnh0Rz5+bsCVJkjTKFlLCvDdwbPX9WOBFHcrsDpyZmTdl5s3AmcAemXlHZn4PIDPvAn4GbDYHMUuSJGnELaSEeePMvL76/jtg4w5lNgWurnVfU/W7T0SsB+xJqaWWJEnSA9ziYQcwFRHxHeARHX56R70jMzMichrDXwx8CfhkZl7RpcwBwAEAW2yxxVRHIUmSpHlmXiXMmblrt98i4vcRsUlmXh8RmwA3dCh2LbBTrXszYHmt+yjg0sz8eEMMR1XlGB8fn3JSLkmSpPllITXJWAbsX33fH/hGhzJnALtFxPrVzX67Vf2IiPcB6wJvmYNYJUmSNE8spIT5A8DzIuJSYNeqm4gYj4jPA2TmTcB7gZ9Wn8My86aI2IzSrGMb4GcR8fOIeO0wJkKSJEmjJTJtVTBd4+PjOTExMewwJEmSeoqI8zJzfNhxzEcLqYZZkiRJGjgTZkmSJKmBCbMkSZLUwIRZkiRJamDCLEmSJDUwYZYkSZIamDBLkiRJDUyYJUmSpAYmzJIkSVIDE2ZJkiSpgQmzJEmS1MCEWZIkSWpgwixJkiQ1MGGWJEmSGpgwS5IkSQ1MmCVJkqQGJsySJElSAxNmSZIkqYEJsyRJktTAhFmSJElqYMIsSZIkNTBhliRJkhqYMEuSJEkNTJglSZKkBibMkiRJUgMTZkmSJKmBCbMkSZLUwIRZkiRJamDCLEmSJDUwYZYkSZIamDBLkiRJDRZMwhwRD4uIMyPi0urv+l3K7V+VuTQi9u/w+7KI+NXsRyxJkqT5YMEkzMChwFmZuTVwVtW9ioh4GPBuYHvgGcC764l1ROwD3D434UqSJGk+WEgJ897AsdX3Y4EXdSizO3BmZt6UmTcDZwJ7AETE2sDbgPfNQaySJEmaJxZSwrxxZl5fff8dsHGHMpsCV9e6r6n6AbwX+ChwR9NIIuKAiJiIiImVK1fOMGRJkiSNusXDDmAqIuI7wCM6/PSOekdmZkTkFIb7VOAxmfnWiBhrKpuZRwFHAYyPj/c9DkmSJM1P8yphzsxdu/0WEb+PiE0y8/qI2AS4oUOxa4Gdat2bAcuBHYDxiFhBmScPj4jlmbkTkiRJekBbSE0ylgGtp17sD3yjQ5kzgN0iYv3qZr/dgDMy89OZ+cjMHAOeA1xisixJkiRYWAnzB4DnRcSlwK5VNxExHhGfB8jMmyhtlX9afQ6r+kmSJEkdRabNcKdrfHw8JyYmhh2GJElSTxFxXmaODzuO+Wgh1TBLkiRJA2fCLEmSJDUwYZYkSZIamDBLkiRJDUyYJUmSpAYmzJIkSVIDE2ZJkiSpgQmzJEmS1MCEWZIkSWpgwixJkiQ1MGGWJEmSGpgwS5IkSQ1MmCVJkqQGJsySJElSAxNmSZIkqYEJsyRJktTAhFmSJElqYMIsSZIkNTBhliRJkhqYMEuSJEkNTJglSZKkBibMkiRJUgMTZkmSJKmBCbMkSZLUIDJz2DHMWxFxG3DxsOPQtG0I3DjsIDRtLr/5y2U3v7n85q/HZeY6ww5iPlo87ADmuYszc3zYQWh6ImLC5Td/ufzmL5fd/Obym78iYmLYMcxXNsmQJEmSGpgwS5IkSQ1MmGfmqGEHoBlx+c1vLr/5y2U3v7n85i+X3TR5058kSZLUwBpmSZIkqYEJsyRJktTAhLkPEbFHRFwcEZdFxKEdfl8jIr5c/f6TiBib+yjVTR/L720R8euI+GVEnBURWw4jTt1fr2VXK/fiiMiI8FFXI6Sf5RcRf19tfxdGxH/NdYzqro995xYR8b2IOL/af75gGHHq/iLiCxFxQ0T8qsvvERGfrJbtLyPiaXMd43xjwtxDRCwCjgSeD2wD7BcR20wq9hrg5szcCjgC+ODcRqlu+lx+5wPjmflk4GTgQ3MbpTrpc9kREesAbwZ+MrcRqkk/yy8itgbeDjw7M7cF3jLngaqjPre/fwVOysztgJcBn5rbKNXgGGCPht+fD2xdfQ4APj0HMc1rJsy9PQO4LDOvyMy7gBOBvSeV2Rs4tvp+MrBLRMQcxqjuei6/zPxeZt5RdZ4DbDbHMaqzfrY9gPdSTlLvnMvg1FM/y+91wJGZeTNAZt4wxzGqu36WXwIPrb6vC1w3h/GpQWb+ALipocjewBezOAdYLyI2mZvo5icT5t42Ba6udV9T9etYJjPvBm4FNpiT6NRLP8uv7jXA6bMakfrVc9lVlxE3z8zT5jIw9aWfbe+xwGMj4uyIOCcimmrENLf6WX5LgVdExDXAt4B/mpvQNABTPTY+4PlqbKkSEa8AxoEdhx2LeouI1YCPAUuGHIqmbzHlkvBOlCs7P4iIJ2XmLUONSv3aDzgmMz8aETsAx0XEEzPz3mEHJg2aNcy9XQtsXuverOrXsUxELKZcmvrDnESnXvpZfkTErsA7gL0y8y9zFJua9Vp26wBPBJZHxArgmcAyb/wbGf1se9cAyzLzr5n5W+ASSgKt4etn+b0GOAkgM38MPBjYcE6i00z1dWxUmwlzbz8Fto6IR0XE6pQbG5ZNKrMM2L/6vi/w3fSNMKOi5/KLiO2Az1KSZdtQjo7GZZeZt2bmhpk5lpljlPbne2XmxHDC1ST97Du/TqldJiI2pDTRuGIug1RX/Sy/q4BdACLiCZSEeeWcRqnpWga8snpaxjOBWzPz+mEHNcpsktFDZt4dEW8CzgAWAV/IzAsj4jBgIjOXAUdTLkVdRmlk/7LhRay6Ppffh4G1ga9U92pelZl7DS1oAX0vO42oPpffGcBuEfFr4B7gkMz06twI6HP5HQR8LiLeSrkBcImVRaMhIr5EORndsGpj/m7gQQCZ+RlKm/MXAJcBdwCvGk6k84evxpYkSZIa2CRDkiRJamDCLEmSJDUwYZYkSZIamDBLkiRJDUyYJUmSpAYmzJIkSVIDE2ZJkiSpgQmzJEmS1MCEWZKGLCLWioiLIuLciHhQrf9uEXFvRPzjMOOTpAc63/QnSSMgIrYDzgGOyMxDI2Jj4BfATzJz7+FGJ0kPbCbMkjQiIuKtwEeA3YGDgScBT8nMG4camCQ9wJkwS9KIiIgATgN2BlYHnpeZZw03KkmSbZglaURkqcE4DlgD+IXJsiSNBhNmSRoREfEI4BPAz4CnRMSbhxySJAkTZkkaCVVzjGOBvwC7Ah8HPhgRTx5qYJIk2zBL0iiIiIOADwE7Z+b3I2J1ylMz1gDGM/PPQw1Qkh7ArGGWpCGLiKcB/wa8PzO/D5CZdwH7AWPAx4YXnSTJGmZJkiSpgTXMkiRJUgMTZkmSJKmBCbMkSZLUwIRZkiRJamDCLEmSJDUwYZYkSZIamDBLkiRJDUyYJUmSpAb/HyndjndcJiMIAAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "SCyN-xGqzGnU"
},
"source": [
"## The Difference Equation\n",
"To convert the boundary problem into a difference equation we use 1st and 2nd order difference operators.\n",
"The general difference equation is\n",
"\\begin{equation} \\frac{1}{h^2}\\left(y_{i-1}-2y_i+y_{i+1}\\right)=4y_i \\ \\ \\ i=1,..,N-1. \\end{equation}\n",
"\n",
"Rearranging the equation we have the system of N-1 equations\n",
"\\begin{equation}i=1: \\frac{1}{0.1^2}\\color{green}{y_{0}} -\\left(\\frac{2}{0.1^2}+4\\right)y_1 +\\frac{1}{0.1^2} y_{2}=0\\end{equation}\n",
"\\begin{equation}i=2: \\frac{1}{0.1^2}y_{1} -\\left(\\frac{2}{0.1^2}+4\\right)y_2 +\\frac{1}{0.1^2} y_{3}=0\\end{equation}\n",
"\\begin{equation} ...\\end{equation}\n",
"\\begin{equation}i=8: \\frac{1}{0.1^2}y_{7} -\\left(\\frac{2}{0.1^2}+4\\right)y_8 +\\frac{1}{0.1^2} y_{9}=0\\end{equation}\n",
"\\begin{equation}i=9: \\frac{1}{0.1^2}y_{8} -\\left(\\frac{2}{0.1^2}+4\\right)y_9 +\\frac{1}{0.1^2} \\color{green}{y_{10}}=0\\end{equation}\n",
"where the green terms are the known boundary conditions.\n",
"\n",
"Rearranging the equation we have the system of 9 equations\n",
"\\begin{equation}i=1: -\\left(\\frac{2}{0.1^2}+4\\right)y_1 +\\frac{1}{0.1^2} y_{2}=-\\frac{1}{0.1^2}\\color{green}{y_{0}}\\end{equation}\n",
"\\begin{equation}i=2: \\frac{1}{0.1^2}y_{1} -\\left(\\frac{2}{0.1^2}+4\\right)y_2 +\\frac{1}{0.1^2} y_{3}=0\\end{equation}\n",
"\\begin{equation} ...\\end{equation}\n",
"\\begin{equation}i=8: \\frac{1}{0.1^2}y_{7} -\\left(\\frac{2}{0.1^2}+4\\right)y_8 +\\frac{1}{0.1^2} y_{9}=0\\end{equation}\n",
"\\begin{equation}i=9: \\frac{1}{0.1^2}y_{8} -\\left(\\frac{2}{0.1^2}+4\\right)y_9 =-\\frac{1}{0.1^2} \\color{green}{y_{10}}\\end{equation}\n",
"where the green terms are the known boundary conditions.\n",
"This is system can be put into matrix form \n",
"\\begin{equation} A\\color{red}{\\mathbf{y}}=\\mathbf{b} \\end{equation}\n",
"Where A is a $9\\times 9 $ matrix of the form\n",
"\\begin{equation}\n",
"A=\\left(\\begin{array}{ccc ccc ccc} \n",
"-204&100&0& 0&0&0& 0&0&0\\\\\n",
"100&-204&100 &0&0&0& 0&0&0\\\\\n",
"0&100&-204& 100&0&0& 0&0&0\\\\\n",
".&.&.& .&.&.& .&.&.\\\\\n",
".&.&.& .&.&.& .&.&.\\\\\n",
"0&0&0& 0&0&0& 100&-204&100\\\\\n",
"0&0&0& 0&0&0& 0&100&-204\n",
"\\end{array}\\right)\n",
"\\end{equation}\n",
"which can be represented graphically as:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "uLh1lBRjzGnV",
"outputId": "0ac57979-fcf3-4b46-d957-d519644d15ab",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 297
}
},
"source": [
"A=np.zeros((N-1,N-1))\n",
"# Diagonal\n",
"for i in range (0,N-1):\n",
" A[i,i]=-(2/(h*h)+4)\n",
"\n",
"for i in range (0,N-2): \n",
" A[i+1,i]=1/(h*h)\n",
" A[i,i+1]=1/(h*h)\n",
" \n",
"plt.imshow(A)\n",
"plt.xlabel('i',fontsize=16)\n",
"plt.ylabel('j',fontsize=16)\n",
"plt.yticks(np.arange(N-1), np.arange(1,N-0.9,1))\n",
"plt.xticks(np.arange(N-1), np.arange(1,N-0.9,1))\n",
"clb=plt.colorbar()\n",
"clb.set_label('Matrix value')\n",
"plt.title('Matrix A',fontsize=32)\n",
"plt.tight_layout()\n",
"plt.subplots_adjust()\n",
"plt.show()"
],
"execution_count": 4,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "B83IhPeqzGnW"
},
"source": [
"$\\mathbf{y}$ is the unknown vector which is contains the numerical approximations of the $y$. \n",
"$$\n",
"\\color{red}{\\mathbf{y}}=\\color{red}{\n",
"\\left(\\begin{array}{c} y_1\\\\\n",
"y_2\\\\\n",
"y_3\\\\\n",
".\\\\\n",
".\\\\\n",
"y_8\\\\\n",
"y_9\n",
"\\end{array}\\right).}\n",
"\\end{equation}"
]
},
{
"cell_type": "code",
"metadata": {
"id": "FFK-dSNEzGnX"
},
"source": [
"y=np.zeros((N+1))\n",
"# Boundary Condition\n",
"y[0]=1.1752\n",
"y[N]=10.0179"
],
"execution_count": 5,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "V6wxbAJDzGnX"
},
"source": [
"and the known right hand side is a known $9\\times 1$ vector with the boundary conditions\n",
"\\begin{equation}\n",
"\\mathbf{b}=\\left(\\begin{array}{c}-117.52\\\\\n",
"0\\\\\n",
"0\\\\\n",
".\\\\\n",
".\\\\\n",
"0\\\\\n",
"-1001.79 \\end{array}\\right)\n",
"\\end{equation}\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "tY-oHTqKzGnY"
},
"source": [
"b=np.zeros(N-1)\n",
"\n",
"# Boundary Condition\n",
"b[0]=-y[0]/(h*h)\n",
"b[N-2]=-y[N]/(h*h)\n"
],
"execution_count": 6,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "GNnf439YzGnY"
},
"source": [
""
],
"execution_count": 6,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "bTAMK-aRzGnY"
},
"source": [
"## Solving the system\n",
"To solve invert the matrix $A$ such that \n",
"\\begin{equation}A^{-1}Ay=A^{-1}b\\end{equation}\n",
"\\begin{equation}y=A^{-1}b\\end{equation}\n",
"The plot below shows the graphical representation of $A^{-1}$."
]
},
{
"cell_type": "code",
"metadata": {
"id": "hV9Lg7MszGnZ",
"outputId": "91829d03-d1cb-4abc-f5fc-fe5a654c5cbc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 297
}
},
"source": [
"invA=np.linalg.inv(A)\n",
"\n",
"plt.imshow(invA)\n",
"plt.xlabel('i',fontsize=16)\n",
"plt.ylabel('j',fontsize=16)\n",
"plt.yticks(np.arange(N-1), np.arange(1,N-0.9,1))\n",
"plt.xticks(np.arange(N-1), np.arange(1,N-0.9,1))\n",
"clb=plt.colorbar()\n",
"clb.set_label('Matrix value')\n",
"plt.title(r'Matrix $A^{-1}$',fontsize=32)\n",
"plt.tight_layout()\n",
"plt.subplots_adjust()\n",
"plt.show()\n",
"\n",
"\n",
"y[1:N]=np.dot(invA,b)"
],
"execution_count": 7,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NsRusA4jzGnZ"
},
"source": [
"## Result \n",
"The plot below shows the approximate solution of the Boundary Value Problem (blue v) and the exact solution (black dashed line)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "128hQge_zGnZ",
"outputId": "c2a0f3f8-5a76-4d5e-cc59-4caccdbedf87",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"source": [
"fig = plt.figure(figsize=(8,4))\n",
"\n",
"plt.plot(x,y,'v',label='Finite Difference')\n",
"plt.plot(x,np.sinh(2*x+1),'k:',label='exact')\n",
"plt.xlabel('x')\n",
"plt.ylabel('y')\n",
"plt.legend(loc='best')\n",
"plt.show()"
],
"execution_count": 8,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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PXqwc+fO037ewIEDSUpKIjExkYMHDzJ79vkNF4iOjmbSpEncfvvtJCUl0aVLl1P6yM/nuOM99dRT7Nu3j8TERNq0acOCBQsu6HVERHzBhx9+yJVXXsmBAweoVq0a1atXdzRPpU4HqygpKSk2MzPzhMc0bSgw6fsqIr5m9uzZjBs3jlmzZnm6ESubL00HExER8Qs5OTkA9OrVi08//dRrRftcVLhFREROMnfuXBo3bszSpUsB39pLQYVbRETkJJ06daJ///60atXK6SinUOEWEREpk5WVRWlpKdHR0YwfP96zEqUvUeEWEREBVq9eTadOnXj11VedjnJWzk1EExER8SGJiYm8+eabDBgwwOkoZ6UWtw/6+9//7tn2U0REKte8efP4+eefMcZwzz33EB4e7nSks1Lh9kEq3CIi3pGfn8+dd97JiBEjnI5SbircF+HkLTiXLl1KUlIShYWFHDx4kFatWvHDDz9QUFBAWlqaZ/vL41c5e++990hKSqJNmzYMHjyYf/3rX8yZM4dhw4bRtm1bfvrpJwe/QhGRwBYeHs6XX37JuHHjnI5SbgFTuFNTU5k0aRLgXr87NTWVDz74AIBDhw6RmprKtGnTADhw4ACpqame3az27t1Lamoqn3zyCQC7du065/udbgvO9evX07NnT5566imGDx/OoEGDSExMJCwsjI8//phly5axYMECHnnkEay1rFmzhmeffZb58+ezcuVKxo4dS9euXenZsyejR49mxYoVNGnSpBLOlohI1fbJJ5/w/vvvA+7dGyMjIx1OVH4anHaBzrQF5x//+Ec6dOhAWFgYr732GuDeUeaJJ57gu+++IygoiB07drB7927mz59Pv379iIqKAqBu3bqOfT0iIlWFtZZx48axb98+BgwYgMvlcjrSeQmYwv3NN994bgcHB59wv0aNGifcj4yMPOF+VFTUCfcvueSSc77fmbbg3LlzJwUFBRw5coTCwkJq1qzJ5MmT2bNnD1lZWQQHB5OQkEBhYeH5fokiIlIBjDHMnDmT4uJivyvaEECXyr3tTFtw3nPPPYwaNYqBAwd6BjscOHCAmJgYgoODWbBggWerzu7duzNjxgzPeri5ubmAu88lPz/fga9KRCRwzZs3j1tvvZWioiJq1KhB7dq1nY50QQKmxe1tx2/BWVpaSnBwML169SI4OJgBAwZQUlJC165d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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "YmzSZaQKzGna"
},
"source": [
""
],
"execution_count": 8,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "hqk1z_AYzGna"
},
"source": [
""
],
"execution_count": 8,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "GD6aqWYEzGna"
},
"source": [
""
],
"execution_count": 8,
"outputs": []
}
]
}